package com.dehui.traders.service;

import com.dehui.traders.bean.Announcement;
import com.dehui.traders.bean.BaseListResponse;
import com.dehui.traders.bean.BaseResponse;
import com.dehui.traders.bean.FinancialData;
import com.dehui.traders.bean.HistData;
import com.dehui.traders.bean.IndexInfo;
import com.dehui.traders.bean.MsgBean;
import com.dehui.traders.bean.OptionalCode;
import com.dehui.traders.bean.PlateListBean;
import com.dehui.traders.bean.PredictBean;
import com.dehui.traders.bean.RealtimeQuote;
import com.dehui.traders.bean.SearchCodeResult;
import com.dehui.traders.ui.stockdetail.bean.LabelTabel;
import com.dehui.traders.ui.stockdetail.bean.StockCapital;
import com.dehui.traders.bean.StockMinuteResponse;
import com.dehui.traders.bean.StrategyInfo;
import com.dehui.traders.bean.Tick;
import com.dehui.traders.bean.TrendInfo;
import com.dehui.traders.bean.UserDetail;
import com.dehui.traders.bean.UserInfo;

import java.util.List;

import okhttp3.RequestBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;

/**
 * Created by hqq on 18.5.7.
 */

public interface API{

    @POST(ApiUrl.register.sendCode)
    Call<BaseResponse<Object>> sendCode(@Body RequestBody entity);

    @POST(ApiUrl.register.register)
    Call<BaseResponse<String>> register(@Body RequestBody entity);

    @POST(ApiUrl.register.login)
    Call<BaseResponse<Object>> login(@Body RequestBody entity);

    @POST(ApiUrl.register.wechatLogin)
    Call<BaseListResponse<UserInfo>> wechatLogin(@Body RequestBody entity);

    @POST(ApiUrl.stock.realtimeQuotes)
    Call<BaseListResponse<IndexInfo>> realTimeQuotes(@Body RequestBody entity);

    @POST(ApiUrl.stock.getTime)
    Call<BaseResponse<Integer>> getTime(@Body RequestBody entity);

    @POST(ApiUrl.stock.getTodayTicks1)
    Call<StockMinuteResponse> getTodayTicks1(@Body RequestBody entity);

    @POST(ApiUrl.optional.getByPhone)
    Call<BaseListResponse<OptionalCode>> getByPhone(@Body RequestBody entity);

    @POST(ApiUrl.optional.searchCodeAndName)
    Call<BaseListResponse<SearchCodeResult>> searchCodeAndName(@Body RequestBody entity);

    @POST(ApiUrl.optional.saveCode)
    Call<BaseResponse<String>> saveCode(@Body RequestBody entity);

    @POST(ApiUrl.optional.getRealtimeQuotes)
    Call<BaseListResponse<RealtimeQuote>> getRealtimeQuotes(@Body RequestBody entity);

    @POST(ApiUrl.optional.delectOption)
    Call<BaseResponse<String>> deleteOption(@Body RequestBody entity);

    @POST(ApiUrl.stock.getKHBussinessLabelPoint)
    Call<BaseListResponse<String[]>> getKBussinessLabelPoint(@Body RequestBody entity);

    @POST(ApiUrl.stock.getTodayBussinessLabelPoint)
    Call<BaseListResponse<String[]>> getTodayBussinessLabelPoint(@Body RequestBody entity);

    @POST(ApiUrl.stock.getHistData)
    Call<BaseListResponse<HistData>> getHistData(@Body RequestBody entity);

    @POST(ApiUrl.query.trend)
    Call<BaseResponse<TrendInfo>> queryTrend(@Body RequestBody entity);

    @POST(ApiUrl.query.strategy)
    Call<BaseListResponse<StrategyInfo>> queryStrategy(@Body RequestBody entity);

    @POST(ApiUrl.stock.getBussinessLabelwPoint)
    Call<BaseListResponse<String[]>> getBussinessLabellwPoint(@Body RequestBody entity);

    @POST(ApiUrl.user.saveUser)
    Call<BaseResponse<Object>> saveUser(@Body RequestBody entity);

    @POST(ApiUrl.user.queryUser)
    Call<BaseResponse<UserDetail>> queryUser(@Body RequestBody entity);

    @POST(ApiUrl.detail.announcement)
    Call<BaseListResponse<Announcement>> queryAnnouncement(@Body RequestBody entity);

    @POST(ApiUrl.detail.financialdata)
    Call<BaseListResponse<FinancialData[]>> queryFinancialData(@Body RequestBody entity);

    @POST(ApiUrl.index.stockcapital)
    Call<BaseListResponse<StockCapital>> stockCapital(@Body RequestBody entity);

    @POST(ApiUrl.labelTabel.labeltabel)
    Call<BaseListResponse<LabelTabel>> getLabelTabel(@Body RequestBody entity);

    @POST(ApiUrl.labelTabel.nextlabeltabel)
    Call<BaseListResponse<PredictBean>> getNexlLabelTable(@Body RequestBody entity);

    @POST(ApiUrl.detail.shareholder)
    Call<BaseListResponse<FinancialData[]>> queryShareHolderData(@Body RequestBody entity);

//    @POST(ApiUrl.detail.theNews)
//    Call<BaseListResponse<FinancialData[]>> queryNews(@Body RequestBody entity);

    @POST(ApiUrl.market.updownlist)
    Call<BaseListResponse<PlateListBean>> updownlist(@Body RequestBody entity);


    @POST(ApiUrl.market.updownlist)
    Call<BaseListResponse<PlateListBean.PlateData>> updownlistRank(@Body RequestBody entity);

    @POST(ApiUrl.market.tradeupdownlist)
    Call<BaseListResponse<PlateListBean.PlateData>> tradeupdownlist(@Body RequestBody entity);

    @POST(ApiUrl.user.pushMessage)
    Call<BaseResponse<List<MsgBean>>> pushMessage(@Body RequestBody entity);

}
